//思路：建立两个栈


import com.sun.deploy.security.SecureStaticVersioning;

import javax.management.remote.rmi._RMIConnection_Stub;
import java.util.*;

public class Solution {
    public static void main(String[] args) {

    }

    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer,Integer> m=new HashMap<>();
        int[] a=new int[k];
        int x=0;
        for (int i = 0; i < nums.length; i++) {
            if(!m.containsKey(nums[i])){
                m.put(nums[i],1);
            }else{
                m.put(nums[i],m.get(nums[i])+1);
            }
        }
        for (int i = 0; i < k; i++) {
            int max=0,index=0;
            for(Iterator<Map.Entry<Integer,Integer>> it=m.entrySet().iterator();it.hasNext();){
                Map.Entry<Integer,Integer> en=it.next();
                if(en.getValue()>max){
                    max=en.getValue();
                    index= en.getKey();
                }

            }
            a[x++]=index;
            m.remove(index);
        }
        return a;
    }
    //优先队列
    public int[] topKFrequent1(int[] nums, int k) {
        Map<Integer,Integer> m=new HashMap<>();
        int[] a=new int[k];
        for(int n: nums){
            m.put(n,m.getOrDefault(n,0)+1);
        }
        PriorityQueue<int[]> p=new PriorityQueue<>((p1,p2)-> p2[1]-p1[1]);
        for(Map.Entry<Integer,Integer> en:m.entrySet()){
            p.add(new int[]{en.getKey(), en.getValue()});
        }
        for (int i = 0; i < a.length; i++) {
            a[i]=p.poll()[0];
        }
        return a;
    }
}